热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

控制组|来宾_你要的docker来了!

篇首语:本文由编程笔记#小编为大家整理,主要介绍了你要的docker来了!相关的知识,希望对你有一定的参考价值。docker基础

篇首语:本文由编程笔记#小编为大家整理,主要介绍了你要的docker来了!相关的知识,希望对你有一定的参考价值。



docker基础


  • 一.容器技术的产生背景
  • 二.docker基础简介
    • 1.docker概述
    • 2,.docker的优势
    • 3.docker的使用场景
    • 4.docker与虚拟化的区别

  • 三.docker架构
  • 四.docker引擎
  • 五.docker三大组件
    • 1.镜像
    • 2.容器(Docker container)
    • 3.仓库(Docker reqistry)

  • 六.底层原理
    • 1.名称空间
    • 2.控制组

  • 七.docker20版本部署
    • 1.环境配置
    • 2.安装依赖包
    • 3.设置阿里云镜像
    • 4.安装docker-ce社区版
    • 5.设置镜像加速
    • 6.网络优化
    • 7.启动,基础常规命令



一.容器技术的产生背景

以linux而言,linux操作系统会有一个主进程pid=1派生出其他进程来控制不同服务例如: pid=2 --> python pid=3–>java pid4–>php ,三个服务可能会相互影响
使用者期望将这三个不同的服务,跑在不同的运行时环境中实现相互不影响,同时不会增加服务器成本。

延伸出能否将这三种服务分别封装起来——》KVM虚拟化技术,实现了一个操作系统模拟多个操作系统/不同的运行时环境。
随着技术发展,虚拟化技术开销较大(例如:只要运行一个python脚本,想要使用虚拟化方式实现,还需要安装一个操作系统,并不方便/合理)
延伸出容器技术;
虚拟化层的抽象层(用户层)剥离,使用docker engine来替代(来宾操作系统去除),只要通过引擎就可以直接连接到宿主机操作系统中,极大减小了开销。
docker引擎对内核版本是有要求的(至少是3.8+)
docker 需要cgroups(Linux内核态中资源管理的模块) 的资源管理功能


二.docker基础简介

1.docker概述

Dcoker是基于容器技术的轻量级虛拟化解决方案,docker是由容器引擎,把linux的cgroup、namespaces等容器底层技术进行完美的封装、并抽象为用户提供创建和管理容器的便捷界面(命令行Cli、api等) C/s


2,.docker的优势

(1)docker引擎统一了基础设施环境:docker环境------》image------>封装一个简易的操作系统(3.0+G)

(2)docker引擎统一了封装应用(装箱/封装-类比于集装箱)方式:docker镜像一》 images

(3)docker 引擎统一了运行时环境:docker容器一 》基于镜像——》运行为容器(可运行的环境)
实现了一次构建、多次、多处使用


3.docker的使用场景

流程:war jar------>Igithub gitlab私有仓库(代码仓库)----> jenkins ( 测试)
(应用程序封装/构建镜像)一》 运维使用镜像下载,使用容器技术进行运行/发布
可以实现:

(1)打包应用程序简单部署
(2)可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如:服务器从腾讯云迁移到阿里云
(3)持续集成和持续交付(CI/CD):开发到测试发布
(4)部署微服务
(5)提供PAAS产品(平台即服务) OpenStack的 云主机类似于阿里云的ECS,属于IAAS;Docker (K8S) 属于PAAS


4.docker与虚拟化的区别


三.docker架构

Docker使用客户端-服务器架构。Docker 客户端与Docker
守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。

Docker区别于传统的虚拟化,不需要虚拟硬件资源,直接使用容器引擎,所以速度快

Docker Client:客户端/提供一个与用户交互,展示的平台+管理、控制docker服务端(功能)的工具

Docker客户端( docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run,客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用Docker APT。 Docker客户端可以与多个守护程序通信。
Docker daemon:守护进程

Docker 守护程序( dockerd))侦听 Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理pocker服务。
Docker images:镜像

存储镜像的地方,默认在公共的Docker Hub上查找,可以做个人仓库(registry harbor)

容器可以被打包成镜像
Docker container:容器
Docker registry:镜像仓库

存储镜像的地方,默认在公共的Docker Hub上查找,可以做个人仓库(registry harbor)


四.docker引擎

Docker Engine是具有以下主要组件的C/S客户端—服务器应用程序:

server端:服务器是一种长期运行的程序,称为守护程序进程(dockerd命令)
CLIENT端: REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口
通过client客户端传入命令,比如以下:
docker run:运行
docker start:开启
docker rm:删除
与sever端进行交互,控制server端进行应命令的操作


五.docker三大组件

1.镜像

模板;组资源集合,包含了应用程序软件包、应用程序相关的依赖包、运行应用程序所需要的基础环境(泛指操作系统环境),可以理解为容器的模板


2.容器(Docker container)

基于镜像的一种运行时状态


3.仓库(Docker reqistry)

存放image镜像模板;仓库分类: 1、公共仓库一》docker hub,2、私有仓库registry harbor


六.底层原理

cgroup和namespaces两者构成了docker底层原理


1.名称空间

容器完美的实现了6个名称空问隔离(namespace资源隔离-用容器化技术封装)
mount:文件系统,挂载点
user:操作进程的用户和用户组
pid:进程编号
uts:主机名和主机域
ipc:信号量、消息队列,共享内存(理解,不同的应用调用的时候应该使用不同的内存空间)
net:网络设备、网络协议栈、端口等


2.控制组

Linux上的Docker引擎还依赖于另一种称为控制组
( cgroups)的技术。cgroup将应用程序限制为一组特定的资源。控制组允许Docker
Engine将可用的硬件资源共享给容器,并有选择地实施限制和约束。例如,您可以限制特定容器可用的内存。


七.docker20版本部署

1.环境配置

[root@localhost ~]# hostnamectl set-hostname docker
[root@localhost ~]# su
[root@docker ~]# systemctl stop firewalld
[root@docker ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@docker ~]# setenforce 0

2.安装依赖包

[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2


3.设置阿里云镜像

[root@docker ~]# cd /etc/yum.repos.d/
[root@docker yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@docker yum.repos.d]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@docker yum.repos.d]#


4.安装docker-ce社区版

[root@docker yum.repos.d]# yum install -y docker-ce


5.设置镜像加速

[root@docker yum.repos.d]# mkdir -p /etc/docker
[root&#64;docker yum.repos.d]# tee /etc/docker/daemon.json <<-&#39;EOF&#39;
>
> "registry-mirrors": ["https://3zj1eww1.mirror.aliyuncs.com"]
>
> EOF

"registry-mirrors": ["https://3zj1eww1.mirror.aliyuncs.com"]

[root&#64;docker yum.repos.d]# systemctl daemon-reload
[root&#64;docker yum.repos.d]# systemctl restart docker
[root&#64;docker yum.repos.d]# cat /etc/docker/daemon.json

"registry-mirrors": ["https://3zj1eww1.mirror.aliyuncs.com"]

[root&#64;docker yum.repos.d]#


6.网络优化

[root&#64;docker yum.repos.d]# vim /etc/sysctl.conf
net.ipv4.ip_forward&#61;1
[root&#64;docker yum.repos.d]# sysctl -p
net.ipv4.ip_forward &#61; 1
[root&#64;docker yum.repos.d]# systemctl restart network

7.启动&#xff0c;基础常规命令

&#xff08;1&#xff09;重启docker

[root&#64;docker yum.repos.d]# systemctl restart docker

&#xff08;2&#xff09;查看docker版本

[root&#64;docker yum.repos.d]# docker -v
Docker version 20.10.8, build 3967b7d

&#xff08;3&#xff09;查看镜像

[root&#64;docker yum.repos.d]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root&#64;docker yum.repos.d]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
[root&#64;docker yum.repos.d]#

&#xff08;4&#xff09;查看容器

[root&#64;docker yum.repos.d]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root&#64;docker yum.repos.d]# docker ps -aq

&#xff08;5&#xff09;查看docker系统级信息

用于显示 docker 的系统级信息&#xff0c;比如内核&#xff0c;镜像数&#xff0c;容器数等

[root&#64;docker yum.repos.d]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)
scan: Docker Scan (Docker Inc., v0.8.0)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.8
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: e25210fe30a0a703442421b0f60afac609f950a3
runc version: v1.0.1-0-g4144b63
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 1.777GiB
Name: docker
ID: 32SA:LEYD:GEQO:NLQH:VOXC:KMPD:DEJS:TRXP:XPCE:PY2V:AFIU:5B2Y
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://3zj1eww1.mirror.aliyuncs.com/
Live Restore Enabled: false
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

推荐阅读
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 关于ScrumXPDevOps的学习
    最近听了ECUG大会上孙敬云老师的分享感觉受益匪浅,毕竟大学课本上只讲到瀑布模型就没有下文了,工作以后一直贯彻的都是Scrum路线,一直也没有时间好好的去学习整理这部分的知识,直到 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • Docker入门指南:初探容器化技术
    Docker入门指南:初探容器化技术摘要:Docker 是一个使用 Go 语言开发的开源容器平台,旨在实现应用程序的构建、分发和运行的标准化。通过将应用及其依赖打包成轻量级的容器,Docker 能够确保应用在任何环境中都能一致地运行,从而提高开发和部署的效率。本文将详细介绍 Docker 的基本概念、核心功能以及如何快速上手使用这一强大的容器化工具。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • 无论你是刚毕业的大学生,还是想在职业中寻求进步的经验丰富的IT专家,这些提示都可以帮你成为DevOps工程师。DevOps工程是一个备受称赞的热门职业。不管你是刚毕业正在找第一份工 ... [详细]
  • .net core  docker+ gogs + jenkins 自动化部署
    一.安装gogs1.拉取gogs镜像dockerpullgogsgogs2.运行gogs容器dockerrun-di--namegogs-p10022:22-p3000:3000- ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 在执行 Vim/VM 命令时遇到错误提示:检测到名为
    在使用 Docker 时,通过 Vim 编辑 Dockerfile 文件时遇到了错误提示:“检测到名为 .dockerfile.swp 的交换文件”。这一问题通常是因为上次编辑该文件时意外中断,导致系统生成了临时的交换文件。为了解决这个问题,可以手动删除该交换文件或使用 Vim 的恢复功能来恢复未保存的更改。 ... [详细]
  • 如何安全有效地强制移除Kubernetes Pod
    在Kubernetes集群管理中,有时需要安全且高效地强制移除Pod以解决故障或进行维护。本文介绍了在遇到难以终止的Pod时,如何通过正确的方法进行强制删除,同时确保不影响集群的稳定性和其他服务的正常运行。通过具体的操作步骤和最佳实践,帮助读者掌握处理此类问题的有效方法。 ... [详细]
  • 利用Jenkins与SonarQube集成实现高效代码质量检测与优化
    本文探讨了通过在 Jenkins 多分支流水线中集成 SonarQube,实现高效且自动化的代码质量检测与优化方法。该方案不仅提高了开发团队的代码审查效率,还确保了软件项目的持续高质量交付。 ... [详细]
  • Kubernetes 1.2 新功能解析:multizone(多区)支持
    导论Kubernetes1.2增加的一个新的功能是把一个集群跑在多个failurezone里(谷歌GCE管它叫“zone”,亚马逊AWS管它们叫“ava ... [详细]
  • 二进制安装Kubernetes高可用集群(上)
    二进制安装Kuber ... [详细]
  • 详细参考:https:www.jianshu.compa3f298850e57jenkins1.下载[Jenkins官网](https:jenkins.iodownload)[Je ... [详细]
author-avatar
mobiledu2502922357
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有